import { DataBlocker, DataProxy } from "../../frame/A-LIB/sources/lib.b.data";

/** 游戏的缓冲数据表结构 */
class Cache {
	/** 游戏当前的关卡记录 */
	round_curr: number;
	/** 上一局游戏的关卡记录 */
	round_last: number;

	/** 是否开启背景音乐 */
	bgm: boolean;

	/** 游戏历史累计消除次数 */
	remove_count: number;
}

const blocker: DataBlocker<Cache> = {
	get: {
		round_curr(proxy, value) {
			return value ?? 1;
		},
		round_last(proxy, value) {
			return value ?? 1;
		},
		remove_count(proxy, value) {
			return value ?? 0;
		},
		bgm(proxy, value) {
			return value ?? true;
		},
	}
}

const proxy_map = new Map<string, Cache>();

export default function get_proxy(prefix?: string){
	prefix = prefix??'';
	if(!proxy_map.has(prefix)){
		proxy_map.set(prefix, DataProxy.initProxy('game_cache', new Cache(), true, blocker, prefix));
	}
	return proxy_map.get(prefix);
}
